{
	nixConfig = {
    	     experimental-features = [ "nix-command" "flakes" ];
    	     substituters = [
      	          "https://cache.nixos.org/"
		  "https://hyprland.cachix.org"
    	     ];
	};

	inputs = {

	     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 
	     nixpkgs-wayland = {
	         url = "github:nix-community/nixpkgs-wayland";
		 inputs.nixpkgs.follows = "nixpkgs";
	     };

	     
	     hyprland = {
	         url = "github:vaxerski/Hyprland";
		 inputs.nixpkgs.follows = "nixpkgs";
	     };


	     home-manager = {
	         url = "github:nix-community/home-manager";
		 inputs.nixpkgs.follows = "nixpkgs";
	     };

	     nix-alien = {
	     	 url = "github:thiagokokada/nix-alien";
		 inputs.nixpkgs.follows = "nixpkgs";
	     };

	    nixvim = {
    		url = "github:nix-community/nixvim";  
    		inputs.nixpkgs.follows = "nixpkgs";
  	    };
	};

	outputs = { self, nixpkgs, ... }@inputs: { 
	    nixosConfigurations = {
	        niga = nixpkgs.lib.nixosSystem {
		    system = "x86_64-linux";
		    specialArgs = inputs;

		    modules = [
		        ./config.nix
		        ./hosts/asus_laptop/hardware-configuration.nix

			inputs.home-manager.nixosModules.home-manager
                        {
                             home-manager = {
                             useUserPackages = true;
                             useGlobalPkgs = true;
                             extraSpecialArgs = { inherit inputs; };
                             users.gg = ./home.nix;
                             };

			}

			({ ... }: {
            			environment.systemPackages = with self.inputs.nix-alien.packages.x86_64-linux; [
              				nix-alien
            			];
          
         		   programs.nix-ld.enable = true;
          		})

		    ];
		};
	    };
	};
}
